/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ec.socialfun.controladores;

import com.ec.socialfun.datamanager.RegistroNuevoUsuarioDataManager;
import com.ec.socialfun.entidades.Ciudad;
import com.ec.socialfun.entidades.Usuario;
import com.ec.socialfun.entidades.Zona;
import com.ec.socialfun.excepciones.RegistrarUsuarioException;
import com.ec.socialfun.servicios.CiudadFacade;
import com.ec.socialfun.servicios.UsuarioFacade;
import com.ec.socialfun.servicios.ZonaFacade;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;

/**
 *
 * @author hp
 */
@ManagedBean
@RequestScoped
public class RegistroNuevoUsuarioControlador extends PadreControlador {

    @EJB
    private UsuarioFacade usuarioFacade;
    @ManagedProperty(value = "#{registroNuevoUsuarioDataManager}")
    private RegistroNuevoUsuarioDataManager registroNuevoUsuarioDataManager;

    public RegistroNuevoUsuarioControlador() {
    }

    public List<SelectItem> getSelectItemCiudad() {
        List<SelectItem> lista = getSelectItemPorDefecto();
        if (getRegistroNuevoUsuarioDataManager().getPais() != null && getRegistroNuevoUsuarioDataManager().getPais().getPaCodigo() != null) {
            List<Ciudad> listaCiudad = ciudadFacade.recuperaPorPais(getRegistroNuevoUsuarioDataManager().getPais());
            for (Ciudad ciudadTmp : listaCiudad) {
                lista.add(new SelectItem(ciudadTmp, ciudadTmp.getCiNombre()));
            }
        }
        return lista;
    }

    public List<SelectItem> getSelectItemZona() {
        List<SelectItem> lista = getSelectItemPorDefecto();
        if (getRegistroNuevoUsuarioDataManager().getCiudad() != null && getRegistroNuevoUsuarioDataManager().getCiudad().getCiCodigo() != null) {
            List<Zona> listaZona = zonaFacade.recuperaPorCiudad(getRegistroNuevoUsuarioDataManager().getCiudad());
            for (Zona zonaTmp : listaZona) {
                lista.add(new SelectItem(zonaTmp, zonaTmp.getZoNombre()));
            }
        }

        return lista;
    }

    public void limpiarCiudad() {
        getRegistroNuevoUsuarioDataManager().setCiudad(null);
    }

    public CiudadFacade getCiudadFacade() {
        return ciudadFacade;
    }

    public void setCiudadFacade(CiudadFacade ciudadFacade) {
        this.ciudadFacade = ciudadFacade;
    }

    public ZonaFacade getZonaFacade() {
        return zonaFacade;
    }

    public void setZonaFacade(ZonaFacade zonaFacade) {
        this.zonaFacade = zonaFacade;
    }

    public void registrarUsuario() {
        try {
            usuarioFacade.registrarUsuario(getRegistroNuevoUsuarioDataManager().getUsuario());
            getRegistroNuevoUsuarioDataManager().setPais(null);
            getRegistroNuevoUsuarioDataManager().setCiudad(null);
            getRegistroNuevoUsuarioDataManager().setUsuario(new Usuario());
            this.mensajeExitoso("Registro realizado correctamente, se ha enviado un mail de confirmacion a su correo");
        } catch (RegistrarUsuarioException e) {
            this.mensajeError("No se pudo realizar el registro de usuario");
        }


    }

    public RegistroNuevoUsuarioDataManager getRegistroNuevoUsuarioDataManager() {
        return registroNuevoUsuarioDataManager;
    }

    public void setRegistroNuevoUsuarioDataManager(RegistroNuevoUsuarioDataManager registroNuevoUsuarioDataManager) {
        this.registroNuevoUsuarioDataManager = registroNuevoUsuarioDataManager;
    }

    public UsuarioFacade getUsuarioFacade() {
        return usuarioFacade;
    }

    public void setUsuarioFacade(UsuarioFacade usuarioFacade) {
        this.usuarioFacade = usuarioFacade;
    }

    @Override
    public void iniciarDatos() {
        
    }
}
